﻿using System.Collections.Generic;
using System.Threading.Tasks;
using SDCloudSolution.SDCloud.Entities.Models;

namespace SDCloudSolution.SDCloud.DataLayer.Model.Interfaces
{
    /// <summary>
    /// Provides methods for works with model statistics storage.
    /// </summary>
    public interface IModelStatisticsDataProvider
    {
        /// <summary>
        /// Gets the model statistics by specific model identifier.
        /// </summary>
        /// <param name="modelId">The model identifier.</param>
        Task<ModelStatisticsEntity> GetByModelIdAsync(int modelId);

        /// <summary>
        /// Gets a list of all model statistics by specific model identifiers.
        /// </summary>
        /// <param name="modelIds">The model ids.</param>
        Task<IEnumerable<ModelStatisticsEntity>> GetByModelIdsAsync(IEnumerable<int> modelIds);

        /// <summary>
        /// Insert a new instance of model statistics information to storage.
        /// </summary>
        /// <param name="entity">The entity.</param>
        Task InsertAsync(ModelStatisticsEntity entity);

        /// <summary>
        /// Updates an exists instance of model statistics in storage.
        /// </summary>
        /// <param name="entity">The entity.</param>
        Task UpdateAsync(ModelStatisticsEntity entity);
    }
}
